package com.gengzp.rpc.core;

import com.gengzp.rpc.exception.RpcException;
import com.gengzp.rpc.model.remoteTransaction.req.RpcRollbackRequest;

import java.util.Map;

/**
 * @ClassName RpcRemoteTransactionRollbackProcessor
 * @Description rpc框架远程事务回滚处理器接口
 * <p> 若用户实现了该接口, 自定义了回滚逻辑, 则优先执行该接口的逻辑 </p>
 * <p> 若用户未实现该接口, 则使用内置的默认回滚逻辑 </p>
 * @Author gengzp
 * @Date 2025/8/25 14:00
 */
public interface RpcRemoteTransactionRollbackProcessor {

    /**
     * 回滚远程事务
     *
     * @param requestUrl    请求url
     * @param requestHeader 请求头
     * @param rollbackReq   请求参数
     */
    void doRollbackRemoteTransaction(String requestUrl,
                                     Map<String, String> requestHeader,
                                     RpcRollbackRequest rollbackReq) throws RpcException;

}
